/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.jsf;

import br.data.model.ListaPrecosDet;
import br.data.model.Listaprecos;
import br.data.model.Listaprodutos;
import br.data.model.ListasPK;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author thiago
 */
@ManagedBean
@SessionScoped
public class RFacesListaPrecos {

    /** Creates a new instance of RFacesListaProduto */
    public RFacesListaPrecos() {
    }
    private int codigolist;
    private int codigocli;
    private int codigoprod;
    private int codigoforn;
    private int datalancamento;
    private int valorunitario;
    private int valortotalproduto;
    private ArrayList<br.data.model.ListaPrecosDet> listapreco = new ArrayList<br.data.model.ListaPrecosDet>();
    private ArrayList<br.data.model.Listaprecos> listaConsulta = new ArrayList<Listaprecos>();

    public ArrayList<ListaPrecosDet> getListapreco() {
        return listapreco;
    }

    public void setListapreco(ArrayList<ListaPrecosDet> listapreco) {
        this.listapreco = listapreco;
    }

    public int getCodigocli() {
        return codigocli;
    }

    public void setCodigocli(int codigocli) {
        this.codigocli = codigocli;
    }

    public int getCodigoforn() {
        return codigoforn;
    }

    public void setCodigoforn(int codigoforn) {
        this.codigoforn = codigoforn;
    }

    public int getCodigolist() {
        return codigolist;
    }

    public void setCodigolist(int codigolist) {
        this.codigolist = codigolist;
    }

    public int getCodigoprod() {
        return codigoprod;
    }

    public void setCodigoprod(int codigoprod) {
        this.codigoprod = codigoprod;
    }

    public int getDatalancamento() {
        return datalancamento;
    }

    public void setDatalancamento(int datalancamento) {
        this.datalancamento = datalancamento;
    }

    public int getValortotalproduto() {
        return valortotalproduto;
    }

    public void setValortotalproduto(int valortotalproduto) {
        this.valortotalproduto = valortotalproduto;
    }

    public int getValorunitario() {
        return valorunitario;
    }

    public void setValorunitario(int valorunitario) {
        this.valorunitario = valorunitario;
    }

    public ArrayList<Listaprecos> getListaConsulta() {
        return listaConsulta;
    }

    public void setListaConsulta(ArrayList<Listaprecos> listaConsulta) {
        this.listaConsulta = listaConsulta;
    }

    public void setCodigoFornBean() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

        this.codigoforn = beanUsers.getForn().getCodigoforn();
    }

    public Object getObject() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

        return beanUsers.getObject();
    }

    public String getSomaValorTotalConsulta() {
        double soma = 0D;
        for (br.data.model.Listaprecos temp : listaConsulta) {
            soma += temp.getValortotalproduto();
        }
        return String.valueOf(soma);
    }

    public String getFornecedorConsulta() {
        return listaConsulta.get(0).getFornecedores().getRazaosocial();
    }

    public String getNumeroListaConsulta() {
        if (!listaConsulta.isEmpty()) {
            return String.valueOf(listaConsulta.get(0).getListaprecosPK().getCodigolist());
        } else {
            return "0";
        }
    }

    public String consListPreco() {
        java.util.Map<String, String> params = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

        int codCli = Integer.parseInt(params.get("codCli"));
        int codList = Integer.parseInt(params.get("codList"));
        int codForn = Integer.parseInt(params.get("codForn"));


        ArrayList<br.data.model.Listaprecos> list = new ArrayList<br.data.model.Listaprecos>(new br.data.crud.CrudListaPrecos().getAll(codList, codForn, codCli));
        this.listaConsulta = list;

        if (getObject() instanceof br.data.model.Clientes) {
            return "cliente_cons_listaprecos.xhtml";
        } else {
            return "fornecedor_cons_listaproduto.xhtml";
        }
    }

    public String consListRanking() {
        try {
            java.util.Map<String, String> params = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

            int codCli = Integer.parseInt(params.get("codCli"));
            int codList = Integer.parseInt(params.get("codList"));

            ArrayList<br.data.model.Listaprecos> list = new ArrayList<br.data.model.Listaprecos>(new br.data.crud.CrudListaPrecos().getRanking(codList, codCli));
            this.listaConsulta = list;

            return "cliente_cons_listaranking.xhtml";
        } catch (Exception e) {
            return "errorpage.xhtml";
        }
    }

    public String pagNovoPreco() {

        java.util.Map<String, String> params = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

        int codCli = Integer.parseInt(params.get("codCli"));
        int codList = Integer.parseInt(params.get("codList"));

        this.codigocli = codCli;
        this.codigolist = codList;
        this.setCodigoFornBean();

        ArrayList<br.data.model.Listaprecos> lista = new ArrayList<br.data.model.Listaprecos>(new br.data.crud.CrudListaPrecos().getAll(codList, this.codigoforn, codCli));
        if (lista.isEmpty()) {
            ArrayList<br.data.model.Listaprodutos> list = new ArrayList<Listaprodutos>(new br.data.crud.CrudListaProdutos().getAll(new ListasPK(codigolist, codigocli)));
            listapreco.clear();
            for (br.data.model.Listaprodutos prod : list) {
                br.data.model.Produtos produtotmp = prod.getProdutos();
                br.data.model.ListaPrecosDet listaPrecotmp = new br.data.model.ListaPrecosDet(produtotmp);
                listaPrecotmp.setQtdRequerida(prod.getQtdrequerida());
                listapreco.add(listaPrecotmp);
            }
            return "fornecedor_ins_listaprecos.xhtml";
        } else {
            return "fornecedor_cons_lancamentos.xhtml";
        }


    }

    public String pagSalvarPrecos() {
        try {
            for (br.data.model.ListaPrecosDet det : listapreco) {
                br.data.model.Listaprecos precos = new br.data.model.Listaprecos(codigoforn, codigolist, codigocli, det.getProdutos().getCodigoprod());
                precos.setDatalancamento(new br.util.utilitarios().getHoje());
                precos.setValorunitario(det.getValorunitario());
                precos.setValortotalproduto(det.getValortotalproduto());
                precos.setListaprodutos(new br.data.model.Listaprodutos(codigolist, codigocli, det.getProdutos().getCodigoprod()));
                new br.data.crud.CrudListaPrecos().persist(precos);
            }
            listapreco.clear();
            return "";
        } catch (Exception e) {
            return "errorpage.xhtml";
        }
    }

    public java.util.ArrayList<br.data.model.Listaprecos> getAllLancamentos() {

        this.setCodigoFornBean();
        ArrayList<br.data.model.Listaprecos> tmp = new br.data.crud.CrudListaPrecos().getDistinctListas(codigoforn);
        return tmp;
    }
}
